package cn.krund.lyc.hotlerobot.utils;

import com.google.gson.Gson;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.lang.reflect.Type;
import java.util.List;


/**
 * @包名: cn.krund.lyc.hotlerobot.utils
 * @作者: 刘育成
 * @时间: 2018/4/5  15:07
 * @org: 克路德人工智能
 * @描述: TODO
 * @fileName: JsonUtil
 */

public class JsonUtil {

    private static Gson gson = null;
    static {
        if (gson == null) {
            gson = new Gson();
        }
    }

    private JsonUtil() {

    }

    public static Gson getGson() {
        return gson;
    }

    /**
     * 将json格式转换成list对象，并准确指定类型
     *
     * @param jsonStr
     * @param type
     * @return
     */
    public static List<?> jsonToList(String jsonStr, Type type) {
        List<?> objList = null;
        if (gson != null) {
            objList = gson.fromJson(jsonStr, type);
        }
        return objList;
    }

    /**
     * 将一个实体类转成Json格式     Map也是Object类型
     * @param object
     * @return
     */
    public static String getJsonFromObject(Object object){
        JSONObject json = JSONObject.fromObject(object);
        return json.toString();
    }

    /**
     * 将集合，数组转换成Json格式
     * @param object
     * @return
     */
    public static String getJsonFromArray(Object object){
        JSONArray json = JSONArray.fromObject(object);
        return json.toString();
    }

    /**
     * 根据类型将Json串转为Object对象    拿到后自行进行强转
     * @param json
     * @param entityClass
     * @return
     */
    public static Object readJsonToObjectByEntityClass(String json,Class entityClass){
        JSONObject jsonObject = JSONObject.fromObject(json);
        return JSONObject.toBean(jsonObject,entityClass);
    }

}
